
def squares_of_a_sorted_array(lis):
    """
    自己写的，没有跑出来
    """
    left = 0
    right = len(lis)-1
    left = 0
    right = len(lis)-1
    if len(lis) <= 1:
        lis[left] *= lis[left]
    if lis[left]**2 > lis[right]**2:
        squares_of_a_sorted_array(lis[left+1:right+1])
        lis[right] = lis[left]**2
    else:
        squares_of_a_sorted_array(lis[left:right])
        lis[right] = lis[right]**2
    print(lis)


def squares_of_a_sorted_array_web(lis):
    """
    教程，暴力求解
    """
    for i in range(len(lis)):
        lis[i] = lis[i]**2
    lis.sort()
    print(lis)

def double_point(lis):
    """
    教程的算法
    """
    lis_ = [0] * len(lis)
    left = 0
    right = len(lis) - 1
    tag = right
    if len(lis) == 0:
        return lis[lis[0]**2]
    else:
        while left <= right:
            if lis[left]**2 < lis[right]**2:
                lis_[tag] = lis[right]**2
                right -= 1
            else:
                lis_[tag] = lis[left] ** 2
                left += 1
            tag -= 1
    print(lis_)


if __name__ == "__main__":
    lis= [-5,1,2,3]
    double_point(lis)